package com.proyemp.login.usuarios;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;

import org.apache.log4j.Logger;

import com.proyemp.entity.classes.Usuario;
import com.proyemp.entity.classes.facade.UsuariosFacadeLocal;
import com.proyemp.instancia.AbstractContract;
import com.proyemp.instancia.AbstractSolver;
import com.proyemp.instancia.Result;

public class SolverLoginUsuarios extends AbstractSolver {
	
	@EJB
	private UsuariosFacadeLocal usuariosFacadeBean;
	private Logger logger = Logger.getLogger(this.getClass());
	LoginParameter loginParam;
	
	@Override
	public void inicializar(List contr) {
		AbstractContract contrato = (AbstractContract)contr.get(0);
		List parametro = contrato.getParameters();
		loginParam = (LoginParameter)parametro.get(0);
	}
	
	@Override
	public void validar() {
	}

	@Override
	public Result resolver() {
		Result result = new Result();
		boolean usuarioCorrecto = false;
		List<Usuario> usuarios;
		
		String user = "admin";
		String pass = "proyemp";
		//Boolean ok = usuariosFacadeBean.login(loginParam.getUsuario(), loginParam.getPassword());
		Boolean ok = validaUsuario(loginParam.getUsuario(), loginParam.getPassword());
		
		List enviar = new ArrayList();
        enviar.add(new Boolean(ok));
        result.setDatos(enviar);
        return result;
	}
	
	public Boolean validaUsuario(String idUsuario, String pass){
		Boolean resultado = new Boolean(false);
		logger.info("Se va a validar usuario");
        String url = "jdbc:postgresql://localhost/proyemp";
	        //List respuesta = new ArrayList();
	        try {
				Class.forName("org.postgresql.Driver");
				Connection con = DriverManager.getConnection(url, "admin", "proyemp");
				Statement stmt = con.createStatement();
				ResultSet rs;
				String query = "select * from usuarios usu where usu.id_usuario='" + idUsuario + "'";
				rs = stmt.executeQuery(query);
				
				while (rs.next()){
					logger.info("Se obtiene el usuario con exito");
					if (pass.equalsIgnoreCase(rs.getString("password"))){
						resultado = true;
					}
				}
				
				stmt.execute("end");
				stmt.close();
				con.close();
				
			} catch (ClassNotFoundException e) {
				logger.info(e.getMessage());
			} catch (SQLException e) {
				logger.info(e.getMessage());
			}
			logger.info("fin de la base");
		
		
		
		return resultado;
	}
}
